Distributed data storage

ABSTRACT

The present invention relates to a distributed data storage system comprising a plurality of storage nodes. Using unicast and multicast transmission, a server application may read and write data in the storage system. Each storage node may monitor reading and writing operations on the system as well as the status of other storage nodes. In this way, the storage nodes may detect a need for replication of files on the system, and may carry out a replication process that serves to maintain a storage of a sufficient number of copies of files with correct versions at geographically diverse locations.

TECHNICAL FIELD

The present disclosure relates to methods for writing and maintainingdata in a data storage system comprising a plurality of data storagenodes, the methods being employed in a server and in a storage node inthe data storage system. The disclosure further relates to storage nodesor servers capable of carrying out such methods.

BACKGROUND

Such a method is disclosed e.g. in US, 2005/0246393, A1. This method isdisclosed for a system that uses a plurality of storage centres atgeographically disparate locations. Distributed object storage managersare included to maintain information regarding stored data.

One problem associated with such a system is how to accomplish simpleand yet robust and reliable writing as well as maintenance of data.

SUMMARY OF THE INVENTION

One object of the present disclosure is therefore to realise robustwriting or maintenance of data in a distributed storage system, withoutthe use of centralised maintenance servers, which may themselves be aweak link in a system. This object is achieved by means a method of theinitially mentioned kind which is accomplished in a storage node andcomprises: monitoring the status of other storage nodes in the system aswell as writing operations carried out in the data storage system,detecting, based on the monitoring, conditions in the data storagesystem that imply the need for replication of data between the nodes inthe data storage system, and initiating a replication process in casesuch a condition is detected. The replication process includes sending amulticast message, to a plurality of storage nodes, the messageenquiring which of those storage nodes store specific data.

By means of such a method, each storage node can be active withmaintaining data of the entire system. In case a storage node fails, itsdata can be recovered by other nodes in the system, which system maytherefore considered to be self-healing.

The monitoring may include listening to heartbeat signals from otherstorage nodes in the system. A condition that implies need forreplication is then a malfunctioning storage node.

The data includes files and a condition implying need for replicationsmay then be one of a file deletion or a file inconsistency.

A replication list, including files that need replication, may bemaintained and may include priorities.

The replication process may include: sending a multicast message to aplurality of storage nodes request enquiring which of those storagenodes store specific data, receiving responses from those storage nodesthat contain said specific data, determining whether said specific datais stored on a sufficient number of storage nodes, and, if not,selecting at least one additional storage node and transmitting saidspecific data to that storage node. Further, the specific data onstorage nodes containing obsolete versions thereof may be updated.

Additionally, the replication process may begin with the storage nodeattempting to attain mastership for the file, to be replicated, amongall storage nodes in the system.

The monitoring may further include monitoring of reading operationscarried out in the data storage system.

The present disclosure further relates to a data storage node, forcarrying out maintenance of data, corresponding to the method. Thestorage node then generally comprises means for carrying out the actionsof the method.

The object is also achieved by means of a method for writing data to adata storage system of the initially mentioned kind, which isaccomplished in a server running an application which accesses data inthe data storage system. The method comprises: sending a multicaststorage query to a plurality of storage nodes, receiving a plurality ofresponses from a subset of said storage nodes, the responses includinggeographic data relating to the geographic position of each server,selecting at least two storage nodes in the subset, based on saidresponses, and sending data and a data identifier, corresponding to thedata, to the selected storage nodes.

This method accomplishes robust writing of data in the sense that ageographic diversity is realised in an efficient way.

The geographic position may include latitude and longitude of thestorage node in question, and the responses may further include systemload and/or system age for the storage node in question.

The multicast storage query may include a data identifier, identifyingthe data to be stored.

Typically, at least three nodes may be selected for storage, and a listof storage nodes, successfully storing the data, may be sent to theselected storage nodes.

The present disclosure further relates to a server, for carrying outwriting of data, corresponding to the method. The server then generallycomprises means for carrying out the actions of the method.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a distributed data storage system.

FIGS. 2A-2C, and FIG. 3 illustrate a data reading process.

FIGS. 4A-4C, and FIG. 5 illustrate a data writing process.

FIG. 6 illustrates schematically a situation where a number of files arestored among a number of data storage nodes.

FIG. 7 illustrates the transmission of heartbeat signals.

FIG. 8 is an overview of a data maintenance process.

DETAILED DESCRIPTION

The present disclosure is related to a distributed data storage systemcomprising a plurality of storage nodes. The structure of the system andthe context in which it is used is outlined in FIG. 1.

A user computer 1 accesses, via the Internet 3, an application 5 runningon a server 7. The user context, as illustrated here, is therefore aregular client-server configuration, which is well known per se.However, it should be noted that the data storage system to be disclosedmay be useful also in other configurations.

In the illustrated case, two applications 5, 9 run on the server 7. Ofcourse however, this number of applications may be different. Eachapplication has an API (Application Programming Interface) 11 whichprovides an interface in relation to the distributed data storage system13 and supports requests, typically write and read requests, from theapplications running on the server. From an application's point of view,reading or writing information from/to the data storage system 13 neednot appear different from using any other type of storage solution, forinstance a file server or simply a hard drive.

Each API 11 communicates with storage nodes 15 in the data storagesystem 13, and the storage nodes communicate with each other. Thesecommunications are based on TCP (Transmission Control Protocol) and UDP(User Datagram Protocol). These concepts are well known to the skilledperson, and are not explained further.

It should be noted that different APIs 11 on the same server 7 mayaccess different sets of storage nodes 15. It should further be notedthat there may exist more than one server 7 which accesses each storagenode 15. This, however does not to any greater extent affect the way inwhich the storage nodes operate, as will be described later.

The components of the distributed data storage system are the storagenodes 15 and the APIs 11, in the server 7 which access the storage nodes15. The present disclosure therefore relates to methods carried out inthe server 7 and in the storage nodes 15. Those methods will primarilybe embodied as software implementations which are run on the server andthe storage nodes, respectively, and are together determining for theoperation and the properties of the overall distributed data storagesystem.

The storage node 15 may typically be embodied by a file server which isprovided with a number of functional blocks. The storage node may thuscomprise a storage medium 17, which typically comprises of a number ofhard drives, optionally configured as a RAID (Redundant Array ofIndependent Disk) system. Other types of storage media are howeverconceivable as well.

The storage node 15 may further include a directory 19, which compriseslists of data entity/storage node relations as a host list, as will bediscussed later.

In addition to the host list, each storage node further contains a nodelist including the IP addresses of all storage nodes in its set or groupof storage nodes. The number of storage nodes in a group may vary from afew to hundreds of storage nodes. The node list may further have aversion number.

Additionally, the storage node 15 may include a replication block 21 anda cluster monitor block 23. The replication block 21 includes a storagenode API 25, and is configured to execute functions for identifying theneed for and carrying out a replication process, as will be described indetail later. The storage node API 25 of the replication block 21 maycontain code that to a great extent corresponds to the code of theserver's 7 storage node API 11, as the replication process comprisesactions that correspond to a great extent to the actions carried out bythe server 7 during reading and writing operations to be described. Forinstance, the writing operation carried out during replicationcorresponds to a great extent to the writing operation carried out bythe server 7. The cluster monitor block 23 is configured to carry outmonitoring of other storage nodes in the data storage system 13, as willbe described in more detail later.

The storage nodes 15 of the distributed data storage system can beconsidered to exist in the same hierarchical level. There is no need toappoint any master storage node that is responsible for maintaining adirectory of stored data entities and monitoring data consistency, etc.Instead, all storage nodes 15 can be considered equal, and may, attimes, carry out data management operations vis-à-vis other storagenodes in the system. This equality ensures that the system is robust. Incase of a storage node malfunction other nodes in the system will coverup the malfunctioning node and ensure reliable data storage.

The operation of the system will be described in the following order:reading of data, writing of data, and data maintenance. Even thoughthese methods work very well together, it should be noted that they mayin principle also be carried out independently of each other. That is,for instance the data reading method may provide excellent propertieseven if the data writing method of the present disclosure is not used,and vice versa.

The reading method is now described with reference to FIGS. 2A-2C and 3,the latter being a flowchart illustrating the method.

The reading, as well as other functions in the system, utilise multicastcommunication to communicate simultaneously with a plurality of storagenodes. By a multicast or IP multicast is here meant apoint-to-multipoint communication which is accomplished by sending amessage to an IP address which is reserved for multicast applications.

For example, a message, typically a request, is sent to such an IPaddress (e.g. 244.0.0.1), and a number of recipient servers areregistered as subscribers to that IP address. Each of the recipientservers has its own IP address. When a switch in the network receivesthe message directed to 244.0.0.1, the switch forwards the message tothe IP addresses of each server registered as a subscriber.

In principle, only one server may be registered as a subscriber to amulticast address, in which case a point-to-point, communication isachieved. However, in the context of this disclosure, such acommunication is nevertheless considered a multicast communication sincea multicast scheme is employed.

Unicast communication is also employed referring to a communication witha single recipient.

With reference to FIG. 2A and FIG. 3, the method for retrieving datafrom a data storage system comprises the sending 31 of a multicast queryto a plurality of storage nodes 15. In the illustrated case there arefive storage nodes each having an IP (Internet Protocol) address192.168.1.1, 192.168.1.2, etc. The number of storage nodes is, needlessto say, just an example. The query contains a data identifier“2B9B4A97-76E5-499E-A21A6D7932DD7927”, which may for instance be aUniversally Unique Identifier, UUID, which is well known per se.

The storage nodes scan themselves for data corresponding to theidentifier. If such data is found, a storage node sends a response,which is received 33 by the server 7, cf. FIG. 2B. As illustrated, theresponse may optionally contain further information in addition to anindication that the storage node has a copy of the relevant data.Specifically, the response may contain information from the storage nodedirectory about other storage nodes containing the data, informationregarding which version of the data is contained in the storage node,and information regarding which load the storage node at present isexposed to.

Based on the responses, the server selects 35 one or more storage nodesfrom which data is to be retrieved, and sends 37 a unicast request fordata to that/those storage nodes, cf. FIG. 2C.

In response to the request for data, the storage node/nodes send therelevant data by unicast to the server which receives 39 the data. Inthe illustrated case, only one storage node is selected. While this issufficient, it is possible to select more than one storage node in orderto receive two sets of data which makes a consistency check possible. Ifthe transfer of data fails, the server may select another storage nodefor retrieval.

The selection of storage nodes may be based on an algorithm that takeseveral factors into account in order to achieve a good overall systemperformance. Typically, the storage node having the latest data versionand the lowest load will be selected although other concepts are fullyconceivable.

Optionally, the operation may be concluded by server sending a list toall storage nodes involved, indicating which nodes contains the data andwith which version. Based on this information, the storage nodes maythemselves maintain the data properly by the replication process to bedescribed.

FIGS. 4A-4C, and FIG. 5 illustrate a data writing process for thedistributed data storage system.

With reference to FIG. 4A and FIG. 5 the method comprises a serversending 41 a multicast storage query to a plurality of storage nodes.The storage query comprises a data identifier and basically consists ofa question whether the receiving storage nodes can store this file.Optionally, the storage nodes may check with their internal directorieswhether they already have a file with this name, and may notify theserver 7 in the unlikely event that this is the case, such that theserver may rename the file.

In any case, at least a subset of the storage nodes will provideresponses by unicast transmission to the server 7. Typically, storagenodes having a predetermined minimum free disk space will answer to thequery. The server 7 receives 43 the responses which include geographicdata relating to the geographic position of each server. For instance,as indicated in FIG. 4B, the geographic data may include the latitude,the longitude and the altitude of each server. Other types of geographicdata may however also be conceivable, such as a ZIP code or the like.

In addition to the geographic data, further information may be providedthat serves as an input to a storage node selection process. In theillustrated example, the amount of free space in each storage node isprovided together with an indication of the storage node's system ageand an indication of the load that the storage node currentlyexperiences.

Based on the received responses, the server selects 45 at least two, ina typical embodiment three, storage nodes in the subset for storing thedata. The selection of storage nodes is carried out by means of analgorithm that take different data into account. The selection iscarried out in order to achieve some kind of geographical diversity. Atleast it should preferably be avoided that only file servers in the samerack are selected as storage nodes. Typically, a great geographicaldiversity may be achieved, even selecting storage nodes on differentcontinents. In addition to the geographical diversity, other parametersmay be included in the selection algorithm. As long as a minimumgeographic diversity is achieved, free space, system age and currentload may also be taken into account.

When the storage nodes have been selected, the data to be stored and acorresponding data identifier is sent to each selected node, typicallyusing a unicast transmission.

Optionally, the operation may be concluded by each storage node, whichhas successfully carried out the writing operation, sending anacknowledgement to the server. The server then sends a list to allstorage nodes involved indicating which nodes have successfully writtenthe data and which have not. Based on this information, the storagenodes may themselves maintain the data properly by the replicationprocess to be described. For instance if one storage node's writingfailed, there exists a need to replicate the file to one more storagenode in order to achieve the desired number of storing storage nodes forthat file.

The data writing method in itself allows an API in a server 7 to storedata in a very robust way, as excellent geographic diversity may beprovided.

In addition to the writing and reading operations, the API in the server7 may carry out operations that delete files and update files. Theseprocesses will be described in connection with the data maintenanceprocess below.

The aim of the data maintenance process is to make sure that areasonable number of non-malfunctioning storage nodes each store thelatest version of each file. Additionally, it may provide the functionthat no deleted files are stored at any storage node. The maintenance iscarried out by the storage nodes themselves. There is thus no need for adedicated “master” that takes responsibility for the maintenance of thedata storage. This ensures improved reliability as the “master” wouldotherwise be a weak spot in the system.

FIG. 6 illustrates schematically a situation where a number of files arestored among a number of data storage nodes. In the illustrated case,twelve nodes, having IP addresses consecutively numbered from192.168.1.1 to 192.168.1.12, are depicted for illustration purposes.Needless to say however, the IP address numbers need not be in the samerange at all. The nodes are placed in a circular order only to simplifythe description, i.e. the nodes need not have any particular order. Eachnode store one or two files identified, for the purpose of simplicity,by the letters A-F.

With reference to FIG. 8, the method for maintaining data comprises thedetecting 51 conditions in the data storage system that imply the needfor replication of data between the nodes in the data storage system,and a replication process 53. The result of the detection process 51 isa list 55 of files for which the need for replication has beenidentified. The list may further include data regarding the priority ofthe different needs for replication. Based on this list the replicationprocess 53 is carried out.

The robustness of the distributed storage relies on that a reasonablenumber of copies of each file, correct versions, are stored in thesystem. In the illustrated case, three copies of each file is stored.However, should for instance the storage node with the address192.168.1.5 fail, the desired number of stored copies for files “B” and“C” will be fallen short of.

One event that results in a need for replication is therefore themalfunctioning of a storage node in the system.

Each storage node in the system may monitor the status of other storagenodes in the system. This may be carried out by letting each storagenode emit a so-called heartbeat signal at regular intervals, asillustrated in FIG. 7. In the illustrated case, the storage node withaddress 192.168.1.7 emits a multicast signal 57 to the other storagenodes in the system, indicating that it is working correctly. Thissignal may be received by all other functioning storage nodes in thesystem carrying out heartbeat monitoring 59 (cf. FIG. 8), or a subsetthereof. In the case with the storage node with address 192.168.1.5however, this node is malfunctioning and does not emit any heartbeatsignal. Therefore, the other storage nodes will notice that no heartbeatsignal has been emitted by this node in a long time which indicates thatthe storage node in question is down.

The heartbeat signal may, in addition to the storage node's address,include its node list version number. Another storage node, listening tothe heartbeat signal and finding out that the transmitting storage nodehas a later version node list, may then request that transmittingstorage node to transfer its node list. This means that addition andremoval of storage nodes can be obtained simply by adding or removing astorage node and sending a new node list version to one single storagenode. This node list will then spread to all other storage nodes in thesystem.

Again with reference to FIG. 8, each storage node searches 61 itsinternal directory for files that are stored by the malfunctioningstorage node. Storage nodes which themselves store files “B” and “C”will find the malfunctioning storage node and can therefore add thecorresponding file on their lists 55.

The detection process may however also reveal other conditions thatimply the need for replicating a file. Typically such conditions may beinconsistencies, i.e. that one or more storage nodes has an obsoleteversion of the file. A delete operation also implies a replicationprocess as this process may carry out the actual physical deletion ofthe file. The server's delete operation then only need make sure thatthe storage nodes set a deletion flag for the file in question. Eachnode may therefore monitor reading and writing operations carried out inthe data storage system. Information provided by the server 7 at theconclusion of reading and writing operations, respectively, may indicatethat one storage node contains an obsolete version of a file (in thecase of a reading operation) or that a storage node did not successfullycarry out a writing operation. In both cases there exists a need formaintaining data by replication such that the overall objects of themaintenance process are fulfilled.

In addition to the basic reading and writing operations 63, 65, at leasttwo additional processes may provide indications that a need forreplication exists, namely the deleting 67 and updating 69 processesthat are now given a brief explanation.

The deleting process is initiated by the server 7 (cf. FIG. 1). Similarto the reading process, the server sends a query by multicasting to allstorage nodes, in order to find out which storage nodes has data with aspecific data identifier. The storage nodes scan themselves for datawith the relevant identifier, and respond by a unicast transmission ifthey have the data in question. The response may include a list, fromthe storage node directory, of other storage nodes containing the data.The server 7 then sends a unicast request, to the storage nodes that areconsidered to store the file, that the file be deleted. Each storagenode sets a flag relating to the file and indicating that it should bedeleted. The file is then added to the replication list, and anacknowledgement is sent to the server. The replication process thenphysically deletes the file as will be described.

The updating process has a search function, similar to the one of thedeleting process, and a writing function, similar to the one carried outin the writing process. The server sends a query by multicasting to allstorage nodes, in order to find out which storage nodes has data with aspecific data identifier. The storage nodes scan themselves for datawith the relevant identifier, and respond by a unicast transmission ifthey have the data in question. The response may include a list, fromthe storage node directory, of other storage nodes containing the data.The server 7 then sends a unicast request, telling the storage nodes toupdate the data. The request of course contains the updated data. Thestorage nodes updating the data sends an acknowledgement to the server,which responds by sending a unicast transmission containing a list withthe storage nodes that successfully updated the data, and the storagenodes which did not. Again, this list can be used by the maintenanceprocess.

Again with reference to FIG. 8 the read 63, write 65, delete 67, andupdate 69 operations may all indicate that a need for replicationexists. The same applies for the heartbeat monitoring 59. The overalldetection process 51 thus generates data regarding which files need bereplicated. For instance, a reading or updating operation may revealthat a specific storage node contains an obsolete version of a file. Adeletion process may set a deletion flag for a specific file. Theheartbeat monitoring may reveal that a number of files, stored on amalfunctioning storage node need be replicated to a new storage node.

Each storage nodes monitors the need for replication for all the filesit stores and maintains a replication list 55. The replication list 55thus contains a number of files that need be replicated. The files maybe ordered in correspondence with the priority for each replication.Typically, there may be three different priority levels. The highestlevel is reserved for files which the storage node holds the last onlinecopy of. Such a file need be quickly replicated to other storage nodessuch that a reasonable level of redundancy may be achieved. A mediumlevel of priority may relate to files where the versions areinconsistent among the storage nodes. A lower level of priority mayrelate to files which are stored on a storage node that ismalfunctioning.

The storage node deals with the files on the replication list 55 inaccordance with their level of priority. The replication process is nowdescribed for a storage node which is here called the operating storagenode, although all storage nodes may operate in this way.

The replication part 53 of the maintaining process starts with theoperating storage node attempting 71 to become the master for the fileit intends to replicate. The operating storage nodes sends a unicastrequest to become master to other storage nodes that are known store thefile in question. The directory 19 (cf. FIG. 1) provides a host listcomprising information regarding which storage nodes to ask. In theevent, for instance in case of a colliding request, that one of thestorage nodes does not respond affirmatively, the file is moved back tothe list for the time being, and an attempt is instead made with thenext file on the list. Otherwise the operating storage node isconsidered to be the master of this file and the other storage nodes seta flag indicating that the operating storage node is master for the filein question.

The next step is to find 73 all copies of the file in question in thedistributed storage system. This may be carried out by the operatingstorage node sending a multicast query to all storage nodes, askingwhich ones of them have the file. The storage nodes having the filesubmit responses to the query, containing the version of the file theykeep as well as their host lists, i.e. the list of storage nodescontaining the relevant file that is kept in the directory of eachstorage node. These host lists are then merged 75 by the operatingstorage node, such that a master host list is formed corresponding tothe union of all retrieved host lists. If additional storage nodes arefound, which were not asked when the operating storage node attempted tobecome master, that step may now be repeated for the additional storagenodes. The master host list contains information regarding whichversions of the file the different storage nodes keep and illustrate thestatus of the file within the entire storage system.

Should the operating storage node not have the latest version of thefile in question, this file is then retrieved 77 from one of the storagenodes that do have the latest version.

The operating storage node then decides 79 whether the host list need tobe changed, typically if additional storage nodes should be added. Ifso, the operating storage node may carry out a process very similar tothe writing process as carried out by the server and as described inconnection with FIGS. 4A-4C, and 5. The result of this process is thatthe file is written to a new storage node.

In case of version inconsistencies, the operating storage node mayupdate 81 copies of the file that are stored on other storage nodes,such that all files stored have the correct version.

Superfluous copies of the stored file may be deleted 83. If thereplication process is initiated by a delete operation, the process mayjump directly to this step. Then, as soon as all storage nodes haveaccepted the deletion of the file, the operating storage node simplyrequests, using unicast, all storage nodes to physically delete the filein question. The storage nodes acknowledge that the file is deleted.

Further the status, i.e. the master host list of the file is updated. Itis then optionally possible to repeat steps 73-83 to make sure that theneed for replication no longer exists. This repetition should result ina consistent master host list that need not be updated in step 85.

Thereafter, the replication process for that file is concluded, and theoperating storage node may release 87 the status as master of the fileby sending a corresponding message to all other storage nodes on thehost list.

This system where each storage node takes responsibility for maintainingall the files it stores throughout the set of storage nodes provides aself-repairing (in case of a storage node malfunction) self-cleaning (incase of file inconsistencies or files to be deleted) system withexcellent reliability. It is easily scalable and can store files for agreat number of different applications simultaneously.

The invention is not restricted to the specific disclosed examples andmay be varied and altered in different ways within the scope of theappended claims.

1. A method for maintaining data in a data storage system comprising aplurality of data storage nodes, the method being employed in a storagenode in the data storage system and comprising: monitoring the status ofother storage nodes in the system as well as writing operations carriedout in the data storage system, the storage node having access to a hostlist, including storage nodes storing a data entity; detecting, based onthe monitoring, conditions in the data storage system that imply theneed for replication of data between the nodes in the data storagesystem; and initiating a replication process in case such a condition isdetected, wherein the replication process includes sending a multicastmessage, to a plurality of storage nodes, the message enquiring which ofthose storage nodes store specific data.
 2. A method according to claim1, wherein the monitoring includes listening to heartbeat signals fromother storage nodes in the system, and wherein a condition implying needfor replication is a malfunctioning storage node.
 3. A method accordingto claim 1, wherein the data includes files and a condition is one of afile deletion or a file inconsistency.
 4. A method according claim 1,wherein a replication list, including files that need replication, ismaintained.
 5. A method according to claim 4, wherein the replicationlist includes priorities.
 6. A method according to claim 1, wherein thereplication process further includes: receiving responses from thosestorage nodes that contain said specific data; determining whether saidspecific data is stored on a sufficient number of storage nodes; and ifnot, selecting at least one additional storage node and transmittingsaid specific data to that storage node.
 7. A method according to claim6, further comprising updating said specific data on storage nodescontaining obsolete versions thereof.
 8. A method according to claim 6,wherein the replication process begins with the storage node attemptingto attain mastership for the file to be replicated among all storagenodes in the system.
 9. A method according to claim 1, wherein themonitoring further includes monitoring of reading operations carried outin the data storage system.
 10. A data storage node for maintaining datain a data storage system comprising a plurality of data storage nodes,the data storage node comprising: means for monitoring the status ofother storage nodes in the system as well as writing operations carriedout in the data storage system, wherein the monitoring is based on ahost list, including storage nodes storing a data entity; means fordetecting, based on the monitoring, conditions in the data storagesystem that imply the need for replication of data between the nodes inthe data storage system; and means for initiating a replication processin case such a condition is detected, wherein the replication processincludes sending a multicast message, to a plurality of storage nodes,the message enquiring which of those storage nodes store specific data.11. A method for writing data to a data storage system comprising aplurality of data storage nodes, the method being employed in a serverrunning an application which accesses data in the data storage system,and comprising: sending a multicast storage query to a plurality of saidstorage nodes; receiving a plurality of responses from a subset of saidstorage nodes, the responses including geographic data relating to thegeographic position of each storage node; selecting at least two storagenodes in the subset, based on said responses; and sending data, a dataidentifier, corresponding to the data, and a list of storage nodessuccessfully storing the data to the selected storage nodes.
 12. Amethod according to claim 11, wherein the geographic position includeslatitude and longitude of the storage node in question.
 13. A methodaccording to claim 12, wherein the responses further includes system agefor the storage node in question.
 14. A method according to claim 12,wherein the responses further includes system load for the storage nodein question.
 15. A method according to any of claim 12, wherein themulticast storage query includes a data identifier, identifying the datato be stored.
 16. A method according to any of claim 12, wherein atleast three nodes are selected.
 17. (canceled)
 18. A server adapted forwriting data to a data storage system comprising a plurality of datastorage nodes, the server comprising: means for sending a multicaststorage query to a plurality of said storage nodes; means for receivinga plurality of responses from a subset of said storage nodes, theresponses including geographic data relating to the geographic positionof each storage node; means for selecting at least two storage nodes inthe subset, based on said responses; and means for sending data and adata identifier, corresponding to the data, and a list of storage nodessuccessfully storing the data to the selected storage node.